package cn.edu.cuit.calculator.service.impl;

import cn.edu.cuit.calculator.dao.CalculatorDao;
import cn.edu.cuit.calculator.service.CalculatorService;
import cn.edu.cuit.calculator.utils.CalculateUtil;
import cn.edu.cuit.calculator.utils.DateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 */
@Service
public class CalculatorServiceImpl implements CalculatorService {

    @Autowired
    private CalculatorDao calculatorDao;

    /**
     *
     * @param expression 传入的表达式
     * @return 返回计算结果
     */
    @Override
    public String calculator(String expression) {
        //前端传入的表达式 × 和 ÷ 需要替换
        expression = expression
                .replaceAll("×", "*")
                .replaceAll("÷", "/");
        String result = "";

        //这里捕获异常 如果表达式出错
        try {
            //这是将计算表达式 传给CalculateUtil 计算出表达式
            result = CalculateUtil.execute(expression);
        } catch (RuntimeException e) {
            e.printStackTrace();
        }
        //将结果写入data.json 文件中
        calculatorDao.saveRecord(expression, result, DateUtil.getNowTime());
        return result;
    }

    /**
     * 这里是查询历史结果
     * @return
     */
    @Override
    public String getRecord() {
        return calculatorDao.readRecord();
    }
}